package Pre.Work;

import java.io.File;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

public class Exam02 {
    public static void main(String[] args) {
        // 编写一个程序，计算指定目录及其子目录中所有文件的总大小。
        File file = new File("E:\\mumu");
        printFile(file);
        System.out.printf("文件大小为：%.2fMB",totalSize(file) /1024.0/1024 );
    }
    public static void printFile(File file){
        List<String> list = new ArrayList<>();
        File[] files = file.listFiles();
        DecimalFormat df = new DecimalFormat("#.##");
        for (int i = 0; i < files.length; i++) {
            if (files[i].isDirectory()) {
                printFile(files[i]);
            }else if (files[i].isFile()){
                list.add(files[i].getAbsoluteFile()  + "文件大小为：" +  df.format(files[i].length() / 1024.0) + "KB" );
            }
        }
        list.forEach(System.out::println);
    }

    public static long totalSize(File dir) {
        long totalSize = 0;
        // 获取目录中的所有文件和子目录
        File[] files = dir.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isFile()) {
                    totalSize += file.length();
                } else if (file.isDirectory()) {
                    totalSize += totalSize(file);
                }
            }
        }
        return totalSize;
    }

}
